<?php
namespace service;
use datos\ClienteDao;
use datos\ProductoDao;
use datos\NotaVentaDao;
use utiles\SessionUtil;
use utiles\Config;
use utiles\Constantes;
use carrito\Carrito;
include_once __DIR__ . '/../Numbers/Words.php';

class NotaVentaService{
	private $clienteDao;
	private $productoDao;
        private $notaVentaDao;
	private $carrito;
	
	function __construct(Carrito $carrito) {
		$conexion = Config::conectarPDO();
		$this->clienteDao = new ClienteDao($conexion);
		$this->productoDao = new ProductoDao($conexion);
                $this->notaVentaDao = new NotaVentaDao($conexion);
//		if (! isset ( $_SESSION ['carritoNotaVenta'] )) {
//			$_SESSION ['carritoNotaVenta'] = new Carrito ();
//		}
		$this->carrito = $carrito;
	}
	
	/**
	 * @param string $rutCliente
	 * @return array
	 */
	public function cargarDatosCliente($rutCliente){
		$vendedor = SessionUtil::getUserSession();
		$cliente = $this->clienteDao->getClienteByRut($rutCliente);
		if(strcasecmp($vendedor->getPerfil(), Constantes::$PERFIL_USER) == 0){
			if($cliente['cod_vendedor'] != $vendedor->getCodVendedor()){
				$cliente['errId'] = 1;
				$cliente['errGlosa'] = 'Usuario no autorizado para consultar este cliente';
			}
		}
		
		return $cliente;
	}
	
	/**
	 * @param string $codProducto
	 * @return model\Producto
	 */
	public function cargarDatosProducto($codProducto){
		$producto = $this->productoDao->getProductoById($codProducto);
		if($producto->errId == 0){
			if($producto->cantidad == 0){
				$producto->errId = 1;
				$producto->errGlosa = 'No hay stock del producto seleccionado';
			}		
		}
		return $producto;
	}
	
	
	/**
	 * @param string $codProducto
	 * @return array
	 */
	public function agregarProductoCarrito($objProducto){		
		$arrProducto = $this->productoDao->getProductoById($objProducto->codProd);
		if(($arrProducto['cantidad'] - $objProducto->cantidad) >= 0 ){
			$this->carrito->introduce_producto(0,
					$objProducto->codProd,
					$objProducto->cantidad,
					$objProducto->descuento,
					$objProducto->precio,
					$objProducto->nombre,
					$objProducto->costo);
			$result = array('errId'=>0, 'errGlosa'=> '' );			
		}else {
			$result = array('errId'=>1, 'errGlosa'=> 'No hay stock suficiente de este producto' );
		}				
		
		return $result;
	}
        
        public function ingresarNotaVenta($notaVenta){
            try{
                $usuario = SessionUtil::getUserSession();
                $notaVenta->codUsuario = $usuario->getCodVendedor();
                $codNotaVenta = $this->notaVentaDao->ingresarNotaVenta($notaVenta, $this->carrito);
                $this->vaciarCarrito();
                return array('errId'=> 0, 'errGlosa' =>"ok", 'codNotaVenta'=>$codNotaVenta);                
            } catch (\Exception $ex) {
                return array('errId'=> 1, 'errGlosa' =>$ex->getMessage());                
            }
            
        }
        
        public function vaciarCarrito(){
            $this->carrito->vaciar();
        }
	
        public function getHtmlCarrito(){
            return $this->carrito->getHtmlCarrito();
        }
        
        public function eliminarProductoCarrito($numProducto){
            $this->carrito->elimina_producto($numProducto);
        }
}